/*
 * Copyright (c) 2021. Moses All Right Reserved
 */

package com.moses.design_patterns.command;

/**
 * @author Moses
 * @email shenhuohui@gmail.com
 * @date 2021/4/18 21:26
 */
public class Client {
    public static void main(String[] args) {
        // 实例一个管理者，或者说对接人
        Manager manager = new Manager();
        // 实例执行者
        Excutor excutor = new Excutor1();
        // 产生一个命令，也指定了又谁执行
        // 实际应用中，可以在Command的实现类中，指定哪个执行者
        // 例如：
        // public Command1() {
        //         super(new Excutor1());
        //     }
        Command command = new Command1(excutor);
        // 对接人收到命令
        manager.setCommand(command);
        // 对接人就开始响应
        manager.action();

        // 突然有问题，发出一个回滚命令
        Command rockback = new RockBackCommand(excutor);
        // 对接人收到命令
        manager.setCommand(rockback);
        // 对接人就开始响应
        manager.action();
    }
}
